Filesystem and operating systems that interface with filesystems generally provide commands for searching and locating files within a tree of a filesystem according to specified criteria.
An example for such command is the UNIX ‘find’ command-line that searches through specified directory or directory tree(s) of a filesystem, according to specified search criteria. Examples of search criteria include file name patterns, e.g. ‘xyz*” for searching files starting with xyz, a compound file name pattern, time constrains related to the modification time or access time of the file, size limits, ownership limitation, certain strings within the file content (‘grep’ command-line utility), directories or sub-trees to be searched in, and other criteria.
The ‘find’ command is considered as a slow command, since it involves massive disk access for reading the relevant parts of the filesystem catalogue (directories and files' metadata). When NAS (Network-Attached Storage) is used to access a network filesystem, the latency imposed by the network makes it unreasonably to use the ‘find’ command.
Yet other solutions are based upon a cyclic update of an index Data-Base by performing periodical queries of the file systems by the Client are inefficient because they are time consuming and thus are executed every few days and thus their content is erroneous most of the time.